#pragma once

#ifndef __LOG_MANAGER_H__
#define __LOG_MANAGER_H__

#include "Common.h"
#include "Color.h"

// Manager for logging operations.
class LogManager
{
public:
	// Clear the screen.
	static void ClearScreen();

	// Display a message and pause.
	static bool DisplayMessageAndPause(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display an error and pause.
	static bool DisplayErrorAndPause(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display a message.
	static bool DisplayMessage(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display an error.
	static bool DisplayError(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display a warning.
	static bool DisplayWarning(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display an information.
	static bool DisplayInformation(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

	// Display a message with suspense.
	static bool DisplayWithSuspense(_In_z_ _Printf_format_string_ const TCHAR* format, ...);

private:
	// color setter
	inline void SetColor(const WORD& color);
};

#endif  // __LOG_MANAGER_H__